package ctm.javacode;

import java.sql.*;
import javax.servlet.*; 
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.*;
import java.math.*;


public class   Pagination {
    private String strPage = null; // page參數變數
    private int curPages; // page參數內部的值
    private int m_rows; // 設置每頁顯示的頁數
    private int pages; // 總頁數

    public String strPage(HttpServletRequest request, String page){
       try{
        strPage = request.getParameter(page); // request對象取得page的值
       }
       catch(Exception e){
            System.out.println("delcolumn"+e.getMessage());    
       }
       return strPage; // 返回這個值。
    }
    // 頁面數
    public int curPages(String strPage){
        try{
            if(strPage == null){ // 默認沒有就設置是第一頁
                curPages = 1;
            }
            else{
                curPages = Integer.parseInt(strPage); // 取得strPage的整數值
                if(curPages < 1) // 如果小於1,同樣返回是第一頁
                    curPages = 1;
            }
        }
        catch(Exception e){
            System.out.print("curPages");
        }
        return curPages; // 返回頁面數
    }
    // 設置每頁要顯示的記錄數
    public void setRows(int rows){
        m_rows=rows;
    }
    // 取得頁數
    public int getPages(int rowcounts){
        int test; // 變數
        test=rowcounts%m_rows; // 取得余數
        if(test==0)
            pages = rowcounts/m_rows; // 每頁顯示的整數
            else
            pages=rowcounts/m_rows+1; // 不是的話就加一
        return pages; // 返回頁數
    }
    // 結果集的返回
    public ResultSet getPageSet(ResultSet rs,int curPages){
        if(curPages==1){
            return rs; // 如果是就一頁的話，就返回這個rs
        }
        else{
            int i=1;
            try{
                while(rs.next()){
                    i=i+1;
                    if(i>=((curPages-1)*m_rows))
                        break; // 退出
                }
                return rs; // 從退出開始將結果集返回
            }
            catch(Exception e){
                System.out.print(e.getMessage());
            }
        }
        return rs;
    }
}